function Out = my_in(In,threshold)
    % Out = my_in(In,threshold)
    %
    % 说明：判断变量是否在区间内，支持向量和矩阵
    % 输入：
    %   In：被判断的元素，可以是向量、矩阵
    %   threshold：区间，可以是
    %       [a1,a2]
    %       也可以是
    %       [a1,a2,b1,b2,c1,c2]
    %       也可以是
    %       [a1, a2;
    %        b1, b2;
    %        c1, c2;]
    % 输出：
    %   Out：逻辑矩阵，是否在列举出的区间内。
    % 
    % Author: sid(cnqdcyq@163.com)
    % Date: 2021/10/19
    % Log:
    %   2021/10/19 ver.01 使用for循环
    %   2021/10/19 ver.02 改写，使用矩阵运算
    
    
    % 确保正确输入了threshold，没输入空的区间
    if isempty(threshold) || mod(numel(threshold),2) ~= 0
        error('输入的区间是空区间或区间不完整')
    end
    % threshold转置以后，就能用一个变量索引了。
    threshold = threshold';
    threshold = sort(threshold);
    
    % 初始化变量
    SIZE = size(In);
    In = reshape(In,[],1);
    NoSections = numel(threshold)/2;% 区间的个数
    OutCache = false(numel(In),NoSections);
    
    % 进项
    for index = 1:(numel(threshold)/2)
        left_index = 2 * index - 1;
        right_index = 2 * index;
        OutCache(:,index) = In >= threshold(left_index) & In <= threshold(right_index);
    end
    
    Out = any(OutCache,2);
    Out = reshape(Out,SIZE);
end

